/*
锻造
属性 = 基础属性+基础属性*0.2*锻造次数
基础属性 = 属性/(1+0.2*锻造次数)
属性 = 当前属性/(1+0.2*当前锻造次数)*(1+0.2*(当前锻造次数+1))
价格 = 基础价格*1.25^锻造次数
*/
window._MDZ = {

    _CURRENTEQUIP:null,

    dzMaxGold:10000000000,

    dzxwPer:0.3,//锻造出独占修为几率

    xwAdd:20,//锻造修为增幅 锻造上限按50

    //品质对应修为数
    _DZXWNMB:{
        'D':1,
        'C':1,
        'B':2,
        'A':3,
        'S':4,
        'SS':5
    },

    //品质对应的基础锻造价格
    _DZCONFIG:{
        'D':{baseGold:200},
        'C':{baseGold:500},
        'B':{baseGold:2000},
        'A':{baseGold:4000},
        'S':{baseGold:6000},
        'SS':{baseGold:10000},
        'SS+':{baseGold:20000}
    },

    //属性增幅
    _DZPER:0.2,

    //初始锻造等级
    _BASEDZLV:50,


    _DEFAULTDZLV:0,


    //获取一键锻造默认等级
    getDefaultDzLv:function(){

        if(_MDZ._DEFAULTDZLV==0){
            return _MDZ.getDzMax();
        }else{
            return _MDZ._DEFAULTDZLV;
        }

    },


    showDZ:function(parentNode,param){
        var uiObj = _GRM.getNodeObj('upgrade');
        var mainLabel = uiObj.node;

        _MDZ._CURRENTLABEL = mainLabel;
        _MDZ._CURRENTPARAM = param;

        if(uiObj.isnew){
            _MDZ.initButton(mainLabel);
        }
        _MDZ.clear();
        parentNode.addChild(mainLabel);
        return mainLabel;
    },

    clear:function(){
        _MDZ._CURRENTLABEL.getChildByName('showLabel').active = false;
        _MDZ._CURRENTLABEL.getChildByName('tips').active = true;
    },

    getDzMax:function(){

        var currentShopLevel = _GAMEDATAHELPER.getShopLevel('锻造商');

        return _MDZ._BASEDZLV+currentShopLevel*50;
    },


    refreshEquipInfo:function(){

        var goodsConfig = _EQUIP[_MDZ._CURRENTEQUIP.type];

        var goodsNode = _MDZ._CURRENTLABEL.getChildByName('showLabel').getChildByName('goods');
        var goldNode = _MDZ._CURRENTLABEL.getChildByName('showLabel').getChildByName('gold');
        var infoNode = _MDZ._CURRENTLABEL.getChildByName('showLabel').getChildByName('info');
        var spendNode = _MDZ._CURRENTLABEL.getChildByName('showLabel').getChildByName('spend');
        //var defaultDzNode = _MDZ._CURRENTLABEL.getChildByName('showLabel').getChildByName('defaultDz');
        var baseInfo = goodsNode.getChildByName('baseInfo');
        var dznode = goodsNode.getChildByName('forging');
        var needGold = _MDZ.getDzGold();

        goldNode.getComponent(cc.Label).string = "当前:"+window.gameData.gold;
        spendNode.getComponent(cc.Label).string = "价格:"+(needGold?needGold:'--');
        //defaultDzNode.getComponent(cc.Label).string = "一键上限:"+_MDZ.getDefaultDzLv();
        infoNode.getComponent(cc.Label).string = _IOF.getGoodsAttrStr(_MDZ._CURRENTEQUIP);
        goodsNode.getChildByName('img').getComponent(cc.Sprite).spriteFrame = _GRM.getEquipFrame(_IOF.getGoodsImg(_MDZ._CURRENTEQUIP));
        dznode.getComponent(cc.Label).string = _MDZ._CURRENTEQUIP.dzlevel?"+"+_MDZ._CURRENTEQUIP.dzlevel:"";
        baseInfo.getComponent(cc.Label).string = _MDZ._CURRENTEQUIP.type+"\n"+goodsConfig.type;
        goodsNode.color = new cc.color(_IOF.getGoodsColor(_MDZ._CURRENTEQUIP));
        _MDZ.refreshXw(_MDZ._CURRENTLABEL);
    },

    resetEquip:function(){
        _CHOICEMANAGER.showChoice(_MAP.node,'resetEquip',null);
    },

    realResetEquip:function(){
        var equipObj = _MDZ._CURRENTEQUIP;
        var equipConfig = _EQUIP[equipObj.type];
        if(equipConfig){
            equipObj.attr = _CU.cloneObj(equipConfig.attr);
            equipObj.dzlevel = 0;
            equipObj.xw = null;
            _MDZ.refreshEquipInfo();
            _TIPS.showMessage("重置成功");
        }
    },

    initButton:function(mainLabel){

        var btnReset = mainLabel.getChildByName('showLabel')
                                .getChildByName('btnReset');
        btnReset.on(cc.Node.EventType.TOUCH_START, function(){
            _MDZ.resetEquip();
        }, btnReset);

        var xwlabel = mainLabel.getChildByName('showLabel')
                        .getChildByName('scrollview')
                        .getChildByName('view')
                        .getChildByName('content')
                        .getChildren();
        for(var i=0;i<xwlabel.length;i++){

            var xwbtn = xwlabel[i].getChildByName('btnUp');
            xwbtn.on(cc.Node.EventType.TOUCH_START, function(){
                console.log(this.xw);
                _MDZ.dz(this.xw);
                _MDZ.refreshEquipInfo();
            }, xwbtn);


            var xwbtnInfo = xwlabel[i].getChildByName('btnInfo');
            xwbtnInfo.on(cc.Node.EventType.TOUCH_START, function(){
                console.log(this.xw);
                
                var fsxarr = _XW[this.xw].fsx;
                if(fsxarr){
                    var str = "";
                    for(var i=0;i<fsxarr.length;i++){
                        str+=_DICT[fsxarr[i].type]+fsxarr[i].base+" ";
                    }
                    _TIPS.showMessage(str);
                }else{
                    _TIPS.showMessage("此修为无加成");
                }

            }, xwbtn);


            var xwbtnbig = xwlabel[i].getChildByName('btnUpBig');
            xwbtnbig.on(cc.Node.EventType.TOUCH_START, function(){
                
                for(var i=0;i<10;i++){
                    if(!_MDZ.dz(this.xw)){
                        break;
                    }
                }
                _MDZ.refreshEquipInfo();
            }, xwbtn);

        }
    },

    refreshXw:function(mainLabel){
        var xwlabel = mainLabel.getChildByName('showLabel')
        .getChildByName('scrollview')
        .getChildByName('view')
        .getChildByName('content')
        .getChildren();

        for(var i=0;i<xwlabel.length;i++){
            var templabel = xwlabel[i];
            templabel.active = false;
        }

        var index=0;

        if(_MDZ._CURRENTEQUIP&&_MDZ._CURRENTEQUIP.xw){
            for(var key in _MDZ._CURRENTEQUIP.xw){
                var templabel = xwlabel[index];
                var xwbtn = templabel.getChildByName('btnUp');
                xwbtn.xw = key;
                templabel.active = true;
                templabel.getChildByName('xw')
                .getComponent(cc.Label).string = _XW[key].label+":"+_MDZ._CURRENTEQUIP.xw[key];
                index++;
            }
        }
    },

    getDzGoldper:function(){
        return _MCH.getHardConf().dzper;
    },

    getDzGold:function(){

        if(_MDZ._CURRENTEQUIP==null){
            return "--";
        }

        return _MDZ.getDzGoldByEquip(_MDZ._CURRENTEQUIP);

    },

    getDzGoldByEquip:function(equip){

        var qua = equip.qua;
        var dzlevel = equip.dzlevel?equip.dzlevel:0;
        var dzconfg = _MDZ._DZCONFIG[qua];

        if(dzconfg){

            var dzgoldper = _MDZ.getDzGoldper();

            var needGold = Math.floor(dzconfg.baseGold*Math.pow(dzgoldper,dzlevel));

            if(needGold>=_MDZ.dzMaxGold){
                needGold=_MDZ.dzMaxGold;
            }

            return needGold;
        }

        return null;

    },

    isequipdz:function(equip,role){

        if(equip
            &&role
            &&equip.xw
            &&role.xw
        ){
            for(var key in equip.xw){
                if(
                    role.xw[key]
                    &&role.xw[key]>=(equip.xw[key]+_MDZ.xwAdd)
                ){
                    return {status:true,xw:key};
                }
            }
        }

        return {status:false};

    },

    //将装备一键锻造至最高修为
    yjdz:function(equip,role,oldattr){

        var result = _MDZ.isequipdz(equip,role);

        if(result.status){

            var xw = result.xw;

            var needGold = _MDZ.getDzGoldByEquip(equip);

            if(_GAMEDATAHELPER.oprMoney(-needGold)){

                _MDZ.realdz(equip,xw);

                _MDZ.yjdz(equip,role,oldattr);

            }else{
                var addattr = _MDZ.getAddAttr(oldattr,equip.attr);
                _TIPS.showMessage("金钱不足"+needGold+",无法继续锻造!\n增加属性:"+_IOF.getAttrString(addattr));
            }

            return ;
        }

        var addattr = _MDZ.getAddAttr(oldattr,equip.attr);
        _TIPS.showMessage("已经锻造至最高修为,无法继续锻造!\n增加属性:"+_IOF.getAttrString(addattr));
        
        return ;

    },

    getAddAttr:function(a,b){
        var add = {};
        for(var key in b){
            if(a[key]&&a[key]<b[key]){
                add[key]=b[key]-a[key];
            }else if(!a[key]){
                add[key]=b[key];
            }
        }
        return add;
    },

    getDzBase:function(equip){

        if(equip.type&&
            _EQUIP[equip.type]&&
            _EQUIP[equip.type].lv
        ){
            var base = Math.floor(_EQUIP[equip.type].lv/100)*0.5;
            if(base<1){
                base=1;
            }
            return base;
        }
        return 1;
    },

    realdz:function(equip,xw){

        var fsxarr = null;
        var fsx = null;
        
        //随机副属性
        if(xw&&_XW[xw].fsx){
            fsxarr = _XW[xw].fsx;
            if(fsxarr){
                fsx = _CU.randomObj(fsxarr);
            }
        }

        if(xw&&fsx){

            var fsxtype = fsx.type;
            //var fsxvalue = fsx.base;
            var fsxvalue = _MDZ.getDzBase(equip);

            if(equip.xw[xw]){
                equip.xw[xw]+=_MDZ.xwAdd;
            }else{
                equip.xw[xw]=_MDZ.xwAdd;
            }

            if(equip.attr[fsxtype]){
                equip.attr[fsxtype]+=fsxvalue;
            }else{
                equip.attr[fsxtype]=fsxvalue;
            }

            var dzlevel = equip.dzlevel?equip.dzlevel:0;
            var nextlevel = dzlevel+1;
            equip.dzlevel=nextlevel;
        }

        return true;
    },

    dz:function(xw){

        if(_MDZ._CURRENTEQUIP==null){
            _TIPS.showMessage('请先放入需要锻造的装备');
            return false;
        }

        
        var needGold = _MDZ.getDzGold();

        if(needGold){

            if(_GAMEDATAHELPER.oprMoney(-needGold)){

                if(_MDZ.realdz(_MDZ._CURRENTEQUIP,xw)){
                    return true;
                }else{
                    _TIPS.showMessage('该装备已到达极限无法锻造');
                    return false;
                }

            }else{

                _TIPS.showMessage('金钱不足无法锻造');
                return false;

            }

            
        }else{
            _TIPS.showMessage('此装备无法锻造');
            return false;
        }

        
    },

    setEquip:function(equip){

        _MDZ._CURRENTEQUIP = equip;

        _MDZ._CURRENTLABEL.getChildByName('showLabel').active = true;

        _MDZ._CURRENTLABEL.getChildByName('tips').active = false;

        _MDZ.refreshEquipInfo();
    },




}